DevelopersIOブログ基盤を北米に移設して, AWSコストを33%削減してみた
AWSチームのすずきです。
ラスベガスで次週(2022/11/28)から開催される re:Invent2022、 当ブログ(DevelopersIO) でも1日100件ペースでの記事公開により、平時の数倍のシステム負荷が見込まれています。
- DevelopersIO 日別投稿実績(100本以上)
投稿数 | 日時 |
---|---|
154 | 2019/12/4 |
124 | 2022/7/7 |
122 | 2021/7/7 |
111 | 2019/12/5 |
104 | 2018/11/27 |
104 | 2018/11/28 |
101 | 2019/12/3 |
今回、現地でのブログ執筆環境の改善をコストパフォーマンスよく実現するため、 ブログ基盤で利用する AWSのリージョンを 東京(ap-northeast-1)から オレゴン(us-west-2) へ 移転する機会がありましたので、紹介させていただきます。
構成図
改善効果
東京リージョンからオレゴンへの移設により、AWS利用費は月額750ドル、約33%の削減を見込んでいます。
東京、オレゴンコスト比較一覧
サービス | Type | 消費量(月間) | 東京単価($) | オレゴン単価($) | 東京月額($) | オレゴン月額($) | 削減率 |
---|---|---|---|---|---|---|---|
RDS | Aurora Capacity Unit hour (Aurora MySQL Serverless v2) | 9000 | 0.200 | 0.120 | 1800 | 1080 | 40% |
Aurora:StorageIOUsage | 500 | 0.240 | 0.200 | 120 | 100 | 17% | |
EC2 | SpotUsage:c6g.large | 2000 | 0.0349 | 0.0338 | 69.8 | - | - |
SpotUsage:c7g.large | 1700 | - | 0.0355 | - | 60.35 | 14% | |
DataTransfer-Out-Bytes | 600 | 0.1083 | 0.085 | 64.98 | 51 | 22% | |
General Purpose (gp3) provisioned storage | 150 | 0.096 | 0.08 | 14.4 | 12 | 17% | |
ELB | Application LoadBalancer-hour | 2400 | 0.0243 | 0.0225 | 58.32 | 54 | 7% |
DataTransfer-Out-Bytes | 800 | 0.1083 | 0.085 | 86.64 | 68 | 22% | |
S3 | TimedStorage-ByteHrs | 2000 | 0.025 | 0.023 | 40 | 36.8 | 8% |
Global Accelerator | Fixed fee for every hour or partial hour | 720 | - | 0.025 | - | 18 | - |
DT-Premium-from-North-America-regions-out-to-Asia-Pacific-Internet-clients | 600 | - | 0.035 | - | 21 | - | |
合計 | 2289.04 | 1531.325 | 33% |
サービス毎
RDS
短時間、スパイク的な DB負荷 に追従できる Aurora Serverless v2 を継続利用しています。
- ACU (Aurora Capacity Unit) は平時 13前後 (メモリ 6.5GB 相当)、最大性能は 60 ACU (メモリ30GB)相当の利用を予定しています。
EC2
c7g インスタンス
オレゴンリージョンの移転後、 2022年5月、北米などのリージョンで一般利用可能となっていた Graviton3 搭載の c7g.largeを採用しました。
c7g 性能
c7g.largeと、東京リージョンで 従来から利用していたインスタンスをオレゴンの本番環境で混在稼働させ、実際のワークロードでCPU使用率を比較しました。
- c7gのCPU使用率は、前世代の c6g と比較し、15%程度低い値でした。
Global Accelerator
日本国内、欧州などの拠点からの執筆体験を損なう事を回避するため、Global Acceleratorを採用、 オレゴンリージョンまでのネットワーク性能を確保しました。
「curl」コマンドを利用して、オレゴンのALBと Global Accelerator経由のブログサイトのパフォーマンスを測定。Global Acceleratorの有効性を確認する事ができました。
東京→オレゴン通信のパフォーマンス
- 測定対象: ブログのトップページ(https://dev.classmethod.jp/)
- NTT東日本のフレッツ網を利用する端末から「curl」コマンドを利用し、ALBと Global Acceleratorの経由の性能を測定
変数 | 解説 | ALB | Global Accelerator |
---|---|---|---|
size_download | ダウンロードしたデータの総量(bytes) | 166063 | 166063 |
speed_download | ダウンロードしたデータ量の1秒あたりの平均(bytes/sec) | 162094 | 281890 |
time_namelookup | DNSの名前解決が完了した時間(sec) | 0.006724 | 0.00423 |
time_connect | TCPなどのコネクションの確立が完了した時間(sec) | 0.143912 | 0.011603 |
time_appconnect | TLSなどの接続、ハンドシェイクが完了した時間(sec) (7.19.0で追加) | 0.438888 | 0.332071 |
time_pretransfer | データの転送が開始した時間(sec) | 0.43908 | 0.332304 |
time_starttransfer | サーバーからレスポンスの最初のデータを受信した時間(sec) | 0.752564 | 0.479812 |
time_total | 全体の処理にかかった時間(sec) | 1.024482 | 0.589105 |
$ host dev.classmethod.jp dev.classmethod.jp has address 13.248.175.13 dev.classmethod.jp has address 76.223.57.58 $ IP='13.248.175.13' $ curl ${IP} -k -o /dev/null -s -w @- << EOF size_download: %{size_download}\n speed_download: %{speed_download}\n time_namelookup: %{time_namelookup}\n time_connect: %{time_connect}\n time_appconnect: %{time_appconnect}\n time_pretransfer: %{time_pretransfer}\n time_starttransfer: %{time_starttransfer}\n time_total: %{time_total}\n EOF
まとめ
AWS費用に占めるDBコストの割合が高い当ブログ(DevelopersIO)サイトでは、 Aurora Serveless のACU単価が 東京より40%廉価な 北米(オレゴン)リージョンへの移転により、 長期リザーブドインスタンスに匹敵するコスト削減が実現できました。
EC2インスタンスや、各種ストレージサービス、ネットワーク通信費用なども、 北米リージョン は 東京リージョンと比較し、10~20%程度廉価な価格設定であったり、 C7gなどコストパフォーマンスに優れたインスタンスを利用できる場合もあります。
国外リージョンの利用に制約がないインターネット向けのサービスを提供するワークロードで、 AWS利用コストを最適化する手段の一つとして北米リージョンを。 また、高いネットワーク性能を必要とする場合には、CloudFront、Global Accelerator を併せてご評価下さい。